package com.example.librarymanagementsystembackend.bookmanagement.mapper;

import com.example.librarymanagementsystembackend.bookmanagement.entity.BookCategoryDatabaseEntity;
import com.example.librarymanagementsystembackend.bookmanagement.entity.BookInformation;

import java.util.List;

/**
 * 图书管理模块 数据访问层接口（MyBatis Mapper）
 */
public interface BookMapper {

    List<BookInformation> queryBooks(int start, int pageSize);

    /**
     * 添加一本图书
     *
     * @param bookInformation 包含图书信息的对象
     * @return 受影响的行数（通常为1）
     */
    int addBook(BookInformation bookInformation);

    /**
     * 通过图书 ID 查询图书信息
     *
     * @param id 图书的唯一标识符
     * @return 对应 ID 的图书信息对象
     */
    BookInformation getBookById(Integer id);

    BookInformation getBookByIsbn(String isbn);

    /**
     * 删除一本图书
     *
     * @param id 要删除的图书 ID
     * @return 受影响的行数
     */
    int deleteBookById(Integer id);

    /**
     * 更新图书信息
     *
     * @param bookInformation 包含新数据的图书信息对象
     * @return 受影响的行数
     */
    int updateBook(BookInformation bookInformation);

    /**
     * 获取所有图书信息
     *
     * @return 图书信息列表
     */
    List<BookInformation> getAllBooks();

    /**
     * 获取所有图书类别
     */
    List<BookCategoryDatabaseEntity> getBookCategoryDatabaseEntities();

    /**
     * 查询是否已存在该ISBN
     */
    boolean hasIsbn(String isbn);

    boolean hasId(int id);
}